<TagAttribute("weapon","weap","item","obje",2,1288)>
Public Class WEAPON_TAG
Inherits HaloTag
Public Const Extension as String = "weapon"
Public Const FourCC as String = "weap"
Public Const ParentFourCC as String = "item"
Public Const GrandParentFourCC as String = "obje"
Public Const [Version] as Short = 2
Public Const HeaderLength as Integer = 1288

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("bounding radius:world units", 1, 0)>
Public bounding_radius as Single

''' <summary>
''' 
''' </summary>
<TagField("bounding offset", 3, 2)>
Public bounding_offset as Single()

''' <summary>
''' 
''' </summary>
<TagField("origin offset", 3, 2)>
Public origin_offset as Single()

''' <summary>
''' marine 1.0, grunt 1.4, elite 0.9, hunter 0.5, etc.
''' </summary>
<TagField("acceleration scale:[0,+inf]", 1, 0)>
Public acceleration_scale as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("model", 16, 10)>
Public model as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("animation graph", 16, 10)>
Public animation_graph as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 40, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("collision model", 16, 10)>
Public collision_model as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("physics", 16, 10)>
Public physics as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("modifier shader", 16, 10)>
Public modifier_shader as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("creation effect", 16, 10)>
Public creation_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 84, -1)>
Public padding_3 as Byte()

''' <summary>
''' if set, this radius is used to determine if the object is visible. set it for the pelican.
''' </summary>
<TagField("render bounding radius:world units", 1, 0)>
Public render_bounding_radius as Single

''' <summary>
''' 
''' </summary>
#Region "export to functions"

''' <summary>
''' 
''' </summary>
<TagField("A in", 1, 17)>
Public A_in as Short

''' <summary>
''' 
''' </summary>
<TagField("B in", 1, 17)>
Public B_in as Short

''' <summary>
''' 
''' </summary>
<TagField("C in", 1, 17)>
Public C_in as Short

''' <summary>
''' 
''' </summary>
<TagField("D in", 1, 17)>
Public D_in as Short

''' <summary>
''' 
''' </summary>
<TagField("", 44, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("hud text message index", 1, 23)>
Public hud_text_message_index as Short

''' <summary>
''' 
''' </summary>
<TagField("forced shader permuation index", 1, 23)>
Public forced_shader_permuation_index as Short

''' <summary>
''' object_attachment_block
''' </summary>
<TagField("attachments", 72, 11)>
Public attachments as List(Of ATTACHMENTS_BLOCK)

''' <summary>
''' object_widget_block
''' </summary>
<TagField("widgets", 32, 11)>
Public widgets as List(Of WIDGETS_BLOCK)

''' <summary>
''' object_function_block
''' </summary>
<TagField("functions", 360, 11)>
Public functions as List(Of FUNCTIONS_BLOCK)

''' <summary>
''' object_change_colors
''' </summary>
<TagField("change colors", 44, 11)>
Public change_colors as List(Of CHANGE_COLORS_BLOCK)

''' <summary>
''' predicted_resource_block
''' </summary>
<TagField("predicted resources", 8, 11)>
Public predicted_resources as List(Of PREDICTED_RESOURCES_BLOCK)

''' <summary>
''' 
''' </summary>
#End Region
#Region "$$$ ITEM $$$"

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags_1 as Integer

''' <summary>
''' This sets which string from tags\ui\hud\hud_item_messages.unicode_string_list to display.
''' </summary>
#End Region
#Region "message-index"

''' <summary>
''' 
''' </summary>
<TagField("message index", 1, 23)>
Public message_index as Short

''' <summary>
''' 
''' </summary>
<TagField("sort order", 1, 23)>
Public sort_order as Short

''' <summary>
''' 
''' </summary>
<TagField("scale", 1, 0)>
Public scale as Single

''' <summary>
''' 
''' </summary>
<TagField("hud message value scale", 1, 23)>
Public hud_message_value_scale as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_5 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_6 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("A in", 1, 17)>
Public A_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("B in", 1, 17)>
Public B_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("C in", 1, 17)>
Public C_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("D in", 1, 17)>
Public D_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 164, -1)>
Public padding_7 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("material effects", 16, 10)>
Public material_effects as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("collision sound", 16, 10)>
Public collision_sound as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 120, -1)>
Public padding_8 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("detonation delay:seconds", 2, 1)>
Public detonation_delay as Single()

''' <summary>
''' 
''' </summary>
<TagField("detonating effect", 16, 10)>
Public detonating_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("detonation effect", 16, 10)>
Public detonation_effect as New TAG_REFERENCE

''' <summary>
''' All weapons should have 'primary trigger' and 'secondary trigger' markers as appropriate.
''' Blurred permutations are called '$primary-blur' and '$secondary-blur'.
''' </summary>
#End Region
#Region "$$$ WEAPON $$$"

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags_2 as Integer

''' <summary>
''' the string used to match this weapon to an animation mode in the unit carrying it
''' </summary>
<TagField("label", 32, 8)>
Public label as String

''' <summary>
''' 
''' </summary>
<TagField("secondary trigger mode", 1, 17)>
Public secondary_trigger_mode as Short

''' <summary>
''' if the second trigger loads alternate ammunition, this is the maximum number of shots that can be loaded at a time
''' </summary>
<TagField("maximum alternate shots loaded", 1, 23)>
Public maximum_alternate_shots_loaded as Short

''' <summary>
''' 
''' </summary>
#End Region
#Region "export to functions"

''' <summary>
''' 
''' </summary>
<TagField("A in", 1, 17)>
Public A_in_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("B in", 1, 17)>
Public B_in_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("C in", 1, 17)>
Public C_in_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("D in", 1, 17)>
Public D_in_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("ready time:seconds", 1, 0)>
Public ready_time as Single

''' <summary>
''' 
''' </summary>
<TagField("ready effect", 16, 10)>
Public ready_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
#End Region
#Region "heat"

''' <summary>
''' the heat value a weapon must return to before leaving the overheated state, once it has become overheated in the first place
''' </summary>
<TagField("heat recovery threshold:[0,1]", 1, 0)>
Public heat_recovery_threshold as Single

''' <summary>
''' the heat value over which a weapon first becomes overheated (should be greater than the heat recovery threshold)
''' </summary>
<TagField("overheated threshold:[0,1]", 1, 0)>
Public overheated_threshold as Single

''' <summary>
''' the heat value above which the weapon has a chance of exploding each time it is fired
''' </summary>
<TagField("heat detonation threshold:[0,1]", 1, 0)>
Public heat_detonation_threshold as Single

''' <summary>
''' the percent chance (between 0.0 and 1.0) the weapon will explode when fired over the heat detonation threshold
''' </summary>
<TagField("heat detonation fraction:[0,1]", 1, 0)>
Public heat_detonation_fraction as Single

''' <summary>
''' the amount of heat lost each second when the weapon is not being fired
''' </summary>
<TagField("heat loss per second:[0,1]", 1, 0)>
Public heat_loss_per_second as Single

''' <summary>
''' the amount of illumination given off when the weapon is overheated
''' </summary>
<TagField("heat illumination:[0,1]", 1, 0)>
Public heat_illumination as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_9 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("overheated", 16, 10)>
Public overheated as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("detonation", 16, 10)>
Public detonation as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("player melee damage", 16, 10)>
Public player_melee_damage as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("player melee response", 16, 10)>
Public player_melee_response as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_10 as Byte()

''' <summary>
''' an optional actor variant that specifies the burst geometry and firing patterns to be used with this weapon
''' </summary>
#End Region
#Region "actor firing parameters"

''' <summary>
''' 
''' </summary>
<TagField("actor firing parameters", 16, 10)>
Public actor_firing_parameters_1 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
#End Region
#Region "reticle"

''' <summary>
''' the range at which the closer of the two static target reticles will be drawn
''' </summary>
<TagField("near reticle range:world units", 1, 0)>
Public near_reticle_range as Single

''' <summary>
''' the range at which the farther of the two static target reticles will be drawn
''' </summary>
<TagField("far reticle range:world units", 1, 0)>
Public far_reticle_range as Single

''' <summary>
''' the maximum range at which the dynamic target reticle will be drawn
''' </summary>
<TagField("intersection reticle range", 1, 0)>
Public intersection_reticle_range as Single

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_11 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "zoom"

''' <summary>
''' the number of magnification levels this weapon allows
''' </summary>
<TagField("magnification levels", 1, 23)>
Public magnification_levels as Short

''' <summary>
''' 
''' </summary>
<TagField("magnification range", 2, 1)>
Public magnification_range as Single()

''' <summary>
''' 
''' </summary>
#End Region
#Region "aim assist"

''' <summary>
''' the maximum angle that autoaim works at full strength
''' </summary>
<TagField("autoaim angle:degrees", 1, 0)>
Public autoaim_angle as Single

''' <summary>
''' the maximum distance that autoaim works at full strength
''' </summary>
<TagField("autoaim range:world units", 1, 0)>
Public autoaim_range as Single

''' <summary>
''' the maximum angle that magnetism works at full strength
''' </summary>
<TagField("magnetism angle:degrees", 1, 0)>
Public magnetism_angle as Single

''' <summary>
''' the maximum distance that magnetism works at full strength
''' </summary>
<TagField("magnetism range:world units", 1, 0)>
Public magnetism_range as Single

''' <summary>
''' the maximum angle that a projectile is allowed to deviate from the gun barrel
''' </summary>
<TagField("deviation angle:degrees", 1, 0)>
Public deviation_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_12 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "movement"

''' <summary>
''' 
''' </summary>
<TagField("movement penalized", 1, 17)>
Public movement_penalized as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_13 as Byte()

''' <summary>
''' percent slowdown to forward movement for units carrying this weapon
''' </summary>
<TagField("forward movement penalty", 1, 0)>
Public forward_movement_penalty as Single

''' <summary>
''' percent slowdown to sideways and backward movement for units carrying this weapon
''' </summary>
<TagField("sideways movement penalty", 1, 0)>
Public sideways_movement_penalty as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_14 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "AI targeting parameters"

''' <summary>
''' minimum range that actors using this weapon will try and target stuff at
''' </summary>
<TagField("minimum target range", 1, 0)>
Public minimum_target_range as Single

''' <summary>
''' how much faster actors look around idly using this weapon (zero is unchanged)
''' </summary>
<TagField("looking time modifier", 1, 0)>
Public looking_time_modifier as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_15 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "miscellaneous"

''' <summary>
''' 
''' </summary>
<TagField("light power-on time:seconds", 1, 0)>
Public light_power as Single

''' <summary>
''' 
''' </summary>
<TagField("light power-off time:seconds", 1, 0)>
Public light_power_1 as Single

''' <summary>
''' 
''' </summary>
<TagField("light power-on effect", 16, 10)>
Public light_power_2 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("light power-off effect", 16, 10)>
Public light_power_3 as New TAG_REFERENCE

''' <summary>
''' how much the weapon's heat recovery is penalized as it ages
''' </summary>
<TagField("age heat recovery penalty", 1, 0)>
Public age_heat_recovery_penalty as Single

''' <summary>
''' how much the weapon's rate of fire is penalized as it ages
''' </summary>
<TagField("age rate of fire penalty", 1, 0)>
Public age_rate_of_fire_penalty as Single

''' <summary>
''' the age threshold when the weapon begins to misfire
''' </summary>
<TagField("age misfire start:[0,1]", 1, 0)>
Public age_misfire_start as Single

''' <summary>
''' at age 1.0, the misfire chance per shot
''' </summary>
<TagField("age misfire chance:[0,1]", 1, 0)>
Public age_misfire_chance as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_16 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "interface"

''' <summary>
''' 
''' </summary>
<TagField("first person model", 16, 10)>
Public first_person_model as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("first person animations", 16, 10)>
Public first_person_animations as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_17 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("hud interface", 16, 10)>
Public hud_interface as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("pickup sound", 16, 10)>
Public pickup_sound as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("zoom-in sound", 16, 10)>
Public zoom_1 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("zoom-out sound", 16, 10)>
Public zoom_2 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_18 as Byte()

''' <summary>
''' how much to decrease active camo when a round is fired
''' </summary>
<TagField("active camo ding", 1, 0)>
Public active_camo_ding as Single

''' <summary>
''' how fast to increase active camo (per tick) when a round is fired
''' </summary>
<TagField("active camo regrowth rate", 1, 0)>
Public active_camo_regrowth_rate as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_19 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_20 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "more miscellaneous"

''' <summary>
''' 
''' </summary>
<TagField("weapon type", 1, 17)>
Public weapon_type as Short

''' <summary>
''' predicted_resource_block
''' </summary>
<TagField("predicted resources", 8, 11)>
Public predicted_resources_1 as List(Of PREDICTED_RESOURCES_1_BLOCK)

''' <summary>
''' magazines
''' </summary>
<TagField("magazines", 112, 11)>
Public magazines as List(Of MAGAZINES_BLOCK)

''' <summary>
''' triggers
''' </summary>
<TagField("triggers", 276, 11)>
Public triggers as List(Of TRIGGERS_BLOCK)
#End Region
Public Class ATTACHMENTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type^", 16, 10)>
Public type as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("marker", 32, 8)>
Public marker as String

''' <summary>
''' 
''' </summary>
<TagField("primary scale", 1, 17)>
Public primary_scale as Short

''' <summary>
''' 
''' </summary>
<TagField("secondary scale", 1, 17)>
Public secondary_scale as Short

''' <summary>
''' 
''' </summary>
<TagField("change color", 1, 17)>
Public change_color as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

End Class
Public Class WIDGETS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("reference^", 16, 10)>
Public reference as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

End Class
Public Class FUNCTIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' this is the period for the above function (lower values make the function oscillate quickly, higher values make it oscillate slowly)
''' </summary>
<TagField("period:seconds", 1, 0)>
Public period as Single

''' <summary>
''' multiply this function by the above period
''' </summary>
<TagField("scale period by", 1, 17)>
Public scale_period_by as Short

''' <summary>
''' 
''' </summary>
<TagField("function", 1, 17)>
Public _function as Short

''' <summary>
''' multiply this function by the result of the above function
''' </summary>
<TagField("scale function by", 1, 17)>
Public scale_function_by as Short

''' <summary>
''' the curve used for the wobble
''' </summary>
<TagField("wobble function", 1, 17)>
Public wobble_function as Short

''' <summary>
''' the length of time it takes for the magnitude of this function to complete a wobble
''' </summary>
<TagField("wobble period:seconds", 1, 0)>
Public wobble_period as Single

''' <summary>
''' the amount of random wobble in the magnitude
''' </summary>
<TagField("wobble magnitude:percent", 1, 0)>
Public wobble_magnitude as Single

''' <summary>
''' if non-zero, all values above the square wave threshold are snapped to 1.0, and all values below it are snapped to 0.0 to create a square wave.
''' </summary>
<TagField("square wave threshold", 1, 0)>
Public square_wave_threshold as Single

''' <summary>
''' the number of discrete values to snap to (e.g., a step count of 5 would snap the function to 0.00,0.25,0.50,0.75 or 1.00)
''' </summary>
<TagField("step count", 1, 23)>
Public step_count as Short

''' <summary>
''' 
''' </summary>
<TagField("map to", 1, 17)>
Public map_to as Short

''' <summary>
''' the number of times this function should repeat (e.g., a sawtooth count of 5 would give the function a value of 1.0 at each of 0.25,0.50,0.75 as well as at 1.0
''' </summary>
<TagField("sawtooth count", 1, 23)>
Public sawtooth_count as Short

''' <summary>
''' add this function to the final result of all of the above math
''' </summary>
<TagField("add", 1, 17)>
Public _add as Short

''' <summary>
''' multiply this function (from a weapon, vehicle, etc.) final result of all of the above math
''' </summary>
<TagField("scale result by", 1, 17)>
Public scale_result_by as Short

''' <summary>
''' controls how the bounds, below, are used
''' </summary>
<TagField("bounds mode", 1, 17)>
Public bounds_mode as Short

''' <summary>
''' 
''' </summary>
<TagField("bounds", 2, 1)>
Public bounds as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' if the specified function is off, so is this function
''' </summary>
<TagField("turn off with", 1, 23)>
Public turn_off_with as Short

''' <summary>
''' applied before clip, ignored if zero
''' </summary>
<TagField("scale by", 1, 0)>
Public scale_by as Single

''' <summary>
''' 
''' </summary>
<TagField("", 252, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("usage", 32, 8)>
Public usage as String

End Class
Public Class CHANGE_COLORS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("darken by", 1, 17)>
Public darken_by as Short

''' <summary>
''' 
''' </summary>
<TagField("scale by", 1, 17)>
Public scale_by as Short

''' <summary>
''' 
''' </summary>
<TagField("scale flags", 1, 20)>
Public scale_flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("color lower bound", 3, 2)>
Public color_lower_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("color upper bound", 3, 2)>
Public color_upper_bound as Single()

''' <summary>
''' object_change_color_permutations
''' </summary>
<TagField("permutations", 28, 11)>
Public permutations as List(Of PERMUTATIONS_BLOCK)
Public Class PERMUTATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("weight", 1, 0)>
Public weight as Single

''' <summary>
''' 
''' </summary>
<TagField("color lower bound", 3, 2)>
Public color_lower_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("color upper bound", 3, 2)>
Public color_upper_bound as Single()

End Class

End Class
Public Class PREDICTED_RESOURCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("resource index", 1, 23)>
Public resource_index as Short

''' <summary>
''' 
''' </summary>
<TagField("tag index", 1, 4)>
Public tag_index as Integer

End Class
Public Class PREDICTED_RESOURCES_1_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("resource index", 1, 23)>
Public resource_index as Short

''' <summary>
''' 
''' </summary>
<TagField("tag index", 1, 4)>
Public tag_index as Integer

End Class
Public Class MAGAZINES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("rounds recharged:per second", 1, 23)>
Public rounds_recharged as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds total initial", 1, 23)>
Public rounds_total_initial as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds total maximum", 1, 23)>
Public rounds_total_maximum as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds loaded maximum", 1, 23)>
Public rounds_loaded_maximum as Short

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' the length of time it takes to load a single magazine into the weapon
''' </summary>
<TagField("reload time:seconds", 1, 0)>
Public reload_time as Single

''' <summary>
''' 
''' </summary>
<TagField("rounds reloaded", 1, 23)>
Public rounds_reloaded as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' the length of time it takes to chamber the next round
''' </summary>
<TagField("chamber time:seconds", 1, 0)>
Public chamber_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("reloading effect", 16, 10)>
Public reloading_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("chambering effect", 16, 10)>
Public chambering_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_4 as Byte()

''' <summary>
''' magazine_objects
''' </summary>
<TagField("magazines", 28, 11)>
Public magazines as List(Of MAGAZINES_BLOCK)
Public Class MAGAZINES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("rounds", 1, 23)>
Public rounds as Short

''' <summary>
''' 
''' </summary>
<TagField("", 10, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("equipment", 16, 10)>
Public equipment as New TAG_REFERENCE

End Class

End Class
Public Class TRIGGERS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
#Region "firing"

''' <summary>
''' the number of firing effects created per second
''' </summary>
<TagField("rounds per second", 2, 1)>
Public rounds_per_second as Single()

''' <summary>
''' the continuous firing time it takes for the weapon to achieve its final rounds per second
''' </summary>
<TagField("acceleration time:seconds", 1, 0)>
Public acceleration_time as Single

''' <summary>
''' the continuous idle time it takes for the weapon to return from its final rounds per second to its initial
''' </summary>
<TagField("deceleration time:seconds", 1, 0)>
Public deceleration_time as Single

''' <summary>
''' a percentage between 0 and 1 which controls how soon in its firing animation the weapon blurs
''' </summary>
<TagField("blurred rate of fire", 1, 0)>
Public blurred_rate_of_fire as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' the magazine from which this trigger draws its ammunition
''' </summary>
<TagField("magazine", 1, 23)>
Public magazine as Short

''' <summary>
''' the number of rounds expended to create a single firing effect
''' </summary>
<TagField("rounds per shot", 1, 23)>
Public rounds_per_shot as Short

''' <summary>
''' the minimum number of rounds necessary to fire the weapon
''' </summary>
<TagField("minimum rounds loaded", 1, 23)>
Public minimum_rounds_loaded as Short

''' <summary>
''' the number of non-tracer rounds fired between tracers
''' </summary>
<TagField("rounds between tracers", 1, 23)>
Public rounds_between_tracers as Short

''' <summary>
''' 
''' </summary>
<TagField("", 6, -1)>
Public padding_1 as Byte()

''' <summary>
''' how loud this weapon appears to the AI
''' </summary>
<TagField("firing noise", 1, 17)>
Public firing_noise as Short

''' <summary>
''' 
''' </summary>
#End Region
#Region "error"

''' <summary>
''' the accuracy (between 0.0 and 1.0) of the weapon during firing
''' </summary>
<TagField("error", 2, 1)>
Public error_1 as Single()

''' <summary>
''' the continuous firing time it takes for the weapon to achieve its final error
''' </summary>
<TagField("acceleration time:seconds", 1, 0)>
Public acceleration_time_1 as Single

''' <summary>
''' the continuous idle time it takes for the weapon to return to its initial error
''' </summary>
<TagField("deceleration time:seconds", 1, 0)>
Public deceleration_time_1 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
#End Region
#Region "charging"

''' <summary>
''' the amount of time it takes for this trigger to become fully charged
''' </summary>
<TagField("charging time:seconds", 1, 0)>
Public charging_time as Single

''' <summary>
''' the amount of time this trigger can be charged before becoming overcharged
''' </summary>
<TagField("charged time:seconds", 1, 0)>
Public charged_time as Single

''' <summary>
''' 
''' </summary>
<TagField("overcharged action", 1, 17)>
Public overcharged_action as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_3 as Byte()

''' <summary>
''' the amount of illumination given off when the weapon is fully charged
''' </summary>
<TagField("charged illumination:[0,1]", 1, 0)>
Public charged_illumination as Single

''' <summary>
''' length of time the weapon will spew (fire continuously) while discharging
''' </summary>
<TagField("spew time:seconds", 1, 0)>
Public spew_time as Single

''' <summary>
''' the charging effect is created once when the trigger begins to charge
''' </summary>
<TagField("charging effect", 16, 10)>
Public charging_effect as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
#End Region
#Region "projectile"

''' <summary>
''' 
''' </summary>
<TagField("distribution function", 1, 17)>
Public distribution_function as Short

''' <summary>
''' 
''' </summary>
<TagField("projectiles per shot", 1, 23)>
Public projectiles_per_shot as Short

''' <summary>
''' 
''' </summary>
<TagField("distribution angle:degrees", 1, 0)>
Public distribution_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("minimum error:degrees", 1, 0)>
Public minimum_error as Single

''' <summary>
''' 
''' </summary>
<TagField("error angle:degrees", 2, 1)>
Public error_angle as Single()

''' <summary>
''' +x is forward, +z is up, +y is left
''' </summary>
<TagField("first person offset:world units", 3, 2)>
Public first_person_offset as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_5 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("projectile", 16, 10)>
Public projectile_1 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
#End Region
#Region "misc"

''' <summary>
''' the amount of time (in seconds) it takes for the ejection port to transition from 1.0 (open) to 0.0 (closed) after a shot has been fired
''' </summary>
<TagField("ejection port recovery time", 1, 0)>
Public ejection_port_recovery_time as Single

''' <summary>
''' the amount of time (in seconds) it takes the illumination function to transition from 1.0 (bright) to 0.0 (dark) after a shot has been fired
''' </summary>
<TagField("illumination recovery time", 1, 0)>
Public illumination_recovery_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_6 as Byte()

''' <summary>
''' the amount of heat generated each time the trigger is fired
''' </summary>
<TagField("heat generated per round:[0,1]", 1, 0)>
Public heat_generated_per_round as Single

''' <summary>
''' the amount the weapon ages each time the trigger is fired
''' </summary>
<TagField("age generated per round:[0,1]", 1, 0)>
Public age_generated_per_round as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_7 as Byte()

''' <summary>
''' the next trigger fires this often while holding down this trigger
''' </summary>
<TagField("overload time:seconds", 1, 0)>
Public overload_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_8 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding_9 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_10 as Byte()

''' <summary>
''' trigger_firing_effect_block
''' </summary>
<TagField("firing effects#firing effects determine what happens when this trigger is fired", 132, 11)>
Public firing_effects as List(Of FIRING_EFFECTS_BLOCK)
#End Region
Public Class FIRING_EFFECTS_BLOCK

''' <summary>
''' the minimum number of times this firing effect will be used, once it has been chosen
''' </summary>
<TagField("shot count lower bound", 1, 23)>
Public shot_count_lower_bound as Short

''' <summary>
''' the maximum number of times this firing effect will be used, once it has been chosen
''' </summary>
<TagField("shot count upper bound", 1, 23)>
Public shot_count_upper_bound as Short

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

''' <summary>
''' this effect is used when the weapon is loaded and fired normally
''' </summary>
<TagField("firing effect^", 16, 10)>
Public firing_effect as New TAG_REFERENCE

''' <summary>
''' this effect is used when the weapon is loaded but fired while overheated
''' </summary>
<TagField("misfire effect", 16, 10)>
Public misfire_effect as New TAG_REFERENCE

''' <summary>
''' this effect is used when the weapon is not loaded
''' </summary>
<TagField("empty effect", 16, 10)>
Public empty_effect as New TAG_REFERENCE

''' <summary>
''' this effect is used when the weapon is loaded and fired normally
''' </summary>
<TagField("firing damage", 16, 10)>
Public firing_damage as New TAG_REFERENCE

''' <summary>
''' this effect is used when the weapon is loaded but fired while overheated
''' </summary>
<TagField("misfire damage", 16, 10)>
Public misfire_damage as New TAG_REFERENCE

''' <summary>
''' this effect is used when the weapon is not loaded
''' </summary>
<TagField("empty damage", 16, 10)>
Public empty_damage as New TAG_REFERENCE

End Class

End Class

End Class
